<?php

class ClienteController extends Controller
{
	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/column2';

	/**
	 * @return array action filters
	 */
	public function filters()
	{
		return array(
			'accessControl', // perform access control for CRUD operations
			'postOnly + delete', // we only allow deletion via POST request
		);
	}

	/**
	 * Specifies the access control rules.
	 * This method is used by the 'accessControl' filter.
	 * @return array access control rules
	 */
	public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('index','view','dinamicData','create','update','admin','delete','admin','autocomplete'),
				'users'=>array('*'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}

	/**
	 * Displays a particular model.
	 * @param integer $id the ID of the model to be displayed
	 */
	public function actionView($id)
	{
		$this->render('view',array(
			'model'=>$this->loadModel($id),
		));
	}
	public function actionDinamicData() {
		$cliente = $_POST['Venta']['cliente'];
		$model = Cliente::model()->findByPK($cliente);
		$data['pago']= CHtml::dropDownList('Venta[forma_cobro]',$model->forma_pago ,CHtml::listData(Formadepago::model()->findAll(),'idFormadepago','descripcion'),array('empty'=>'Forma de Pago...',));
		$data['circuito']= CHtml::dropDownList('Venta[distribucion]',$model->circuito ,CHtml::listData(Circuito::model()->findAll(),'idCircuito','descripcion'),array('empty'=>'Seleccione la distribucion...',));
		$data['direccion']=$model->direccion." (".$model->localidad0->nombre.")";
		$data['nombre'] = $model->nombre;
		$data['descuento']= $model->descuento;
		$data['percepcion'] = $this->percepcion($model);
		$data['tipo'] = $model->posicionIva->tFactura;
		echo CJavaScript::jsonEncode($data);
	}
	private function percepcion($cliente)
	{
		
		if (($cliente->idCliente==1 || $cliente->localidad0->provincia != 16)) { //Es consumidor final o no es de Rio Negro 
			return 0;
		}
		if (!($cliente->percepcion))
		{
			return 0;
		}
		$condicion_1 = $cliente->percepcion->contribuyenteRN;
		$condicion_2 = $cliente->percepcion->convenio_multilateral;
		$condicion_3 = $cliente->percepcion->jusrisdiccionRN;
		$coef = $cliente->percepcion->coeficiente;
		if (!($condicion_1))
		{
			return 0;
		}
		if (!($condicion_2)) {
			return 0.01;
		}
		if (!($condicion_3))
		{
			return 0.005;
		}
		if ($coef>0.03) {
			return 0.005;
		}
		return 0;
		
	}

	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
	public function actionCreate()
	{
		$model=new Cliente;

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Cliente']))
		{
			$model->attributes=$_POST['Cliente'];
			if($model->save())
				if($model->localidad0->provincia0->idprovincia==16) {
					$this->redirect(array('percepcion/create','id'=>$model->idCliente));
				}
				else{
					$this->redirect(array('view','id'=>$model->idCliente));
				}
		}

		$this->render('create',array(
			'model'=>$model,
		));
	}

	/**
	 * Updates a particular model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 * @param integer $id the ID of the model to be updated
	 */
	public function actionUpdate($id)
	{
		$model=$this->loadModel($id);

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Cliente']))
		{
			$model->attributes=$_POST['Cliente'];
			if($model->save())
				if($model->localidad0->provincia0->idprovincia==16) {
					$this->redirect(array('percepcion/update','id'=>$model->idCliente));
				}
				else{
					$this->redirect(array('view','id'=>$model->idCliente));
				}
		}

		$this->render('update',array(
			'model'=>$model,
		));
	}

	/**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'admin' page.
	 * @param integer $id the ID of the model to be deleted
	 */
	public function actionDelete($id)
	{
		$this->loadModel($id)->delete();

		// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
		if(!isset($_GET['ajax']))
			$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
	}

	/**
	 * Lists all models.
	 */
	public function actionIndex()
	{
		$dataProvider=new CActiveDataProvider('Cliente');
		$this->actionAdmin();
	}

	/**
	 * Manages all models.
	 */
	public function actionAdmin()
	{
		$model=new Cliente('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Cliente']))
			$model->attributes=$_GET['Cliente'];

		$this->render('admin',array(
			'model'=>$model,
		));
	}

	/**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 * @param integer $id the ID of the model to be loaded
	 * @return Cliente the loaded model
	 * @throws CHttpException
	 */
	public function loadModel($id)
	{
		$model=Cliente::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

	/**
	 * Performs the AJAX validation.
	 * @param Cliente $model the model to be validated
	 */
	protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='cliente-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
	public function actionAutocomplete () {
		if (isset($_GET['term'])) {
			$criteria=new CDbCriteria;
			$criteria->alias = "cliente";
			$criteria->condition = "cliente.nombre like '" . $_GET['term'] . "%'";
	
			$dataProvider = new CActiveDataProvider(get_class(Cliente::model()), array(
					'criteria'=>$criteria,'pagination'=>false,
			));
			$clientes = $dataProvider->getData();
	
			$return_array = array();
			foreach($clientes as $cliente) {
				$return_array[] = array(
						'label'=>$cliente->nombre,
						'value'=>$cliente->nombre,
						'id'=>$cliente->idCliente,
				);
			}
	
			echo CJSON::encode($return_array);
		}
	}
}
